home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / rbbs / rbbs_mpl.zip / MBS40705.MRG < prev    next >
Text File  |  1992-07-05  |  56KB  |  1,358 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB4.BAS to produce E:\RBBS\CHAT\RBBSSUB4.BAS
  3. * E:\RBBS\STOCK\RBBSSUB4.BAS:  Date 6-20-1992  Size 120885 bytes
  4. * ------------[ Created 07-05-1992 07:16:12 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB4.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1992 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB4.BAS
  10. '  First Released .....: June 21, 1992
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1992
  13. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  14. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  15. '     require error trapping are incorporated within RBBSSUB 2-5 as
  16. '     separately callable subroutines in order to free up as much
  17. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  18. '  Parameters..........: Most parameters are passed via a COMMON statement.
  19. '
  20. ' Subroutine  Line               Function of Subroutine
  21. '   Name     Number
  22. '  AnyBut         59760  Determine where a "word" begins
  23. '  AskUsers       64003  Ask users questions based on a script and save answers
  24. '  AskMore        59858  Check whether screen full
  25. '  AutoPage       60300  Check whether to notify sysop caller is on
  26. ' BadFileChar     59800  Check file name for bad character
  27. '  Bracket        59960  Puts strings around a substring
  28. '  BufFile        58400  Write a file to the user quickly
  29. '  BufString      58300  Write a string with imbedded CR/LF to the user quickly
  30. '  CheckColor     59930  Highlighting based on search string
  31. '  CmndToggle     64635  Processes user command to T)oggle preferences
  32. * ------[ first line different ]------
  33. '  CmndSysopXfer  64640  Sysop function to change Xfer count
  34. '  ColorDir       59920  Adds colorization to FMS directory entry
  35. '  ColorPrompt    59940  Colorizes prompts
  36. '  CompDate       59880+ Produces a computational data from YY, MM, DD
  37. '  ConfMail       59850  Check conference mail waiting
  38. '  ConvertDir     58950  Checks for U & A (shorthand) and converts appropriately
  39. '  PackDate       59201  Compress date in string format to 2 characters
  40. '  EofComm        60000  Determine whether any chars in comm port buffer
  41. '  ExpireDate     59890  Calculate registration expiration date
  42. '  FakeXRpt       62650  Write out file transfer report for protocols that don't
  43. '  FindEnd        58770  Find where a "word" ends
  44. '  FindFile       58790  Determine whether a file exists without opening it
  45. '  FindLast       58600  Find last occurence of a string
  46. '  FMS            58200  Search the upload management system for entries
  47. '  GetAll         59780  Get list of all directories to display
  48. '  GetDirs        58895  Prompts for directories for file list/new/search cmds
  49. '  GetMsgAttr     62530  Restore attributes of original message
  50. '  GetYMD         59204  Pulls YY, MM, or DD from a 2 byte stored date
  51. '  GlobalSrchRepl 60100  Global search and replace
  52. '  LogPDown       59400  Records download in private directory
  53. '  MarkTime       60200  Give visual feedback during lengthy process
  54. '  MetaGSR        60130  Meta statement global search and replace
  55. '  MsgImport      59698  Allow local user to import a text file to a message
  56. '  Muzak          59100  Play musical themes for different RBBS functions
  57. '  NewPassword    60668  Get a new password
  58. '  Protocol       62600  Determine if external protocols are available
  59. '  PutMsgAttr     62520  Save attributes of original message
  60. '  Remove         58210  Remove characters from within strings
  61. '  RotorsDir      58700  Searches for a file using list of subdirs
  62. '  RptTime        62540  Report date/time and time on
  63. '  SearchArray    58190  Check for the occurance of a string in an array
  64. '  SetEcho        59600  Set RBBS properly for who is to echo
  65. '  SetHiLite      59934  Set user preference on highlighting
  66. '  SetGraphic     59980  Sets graphic preference for text file display
  67. '  SetNewUserDef  64645  Sets new user defaults
  68. '  SmartText      58250  Process SMART TEXT control strings
  69. '  SubMenu        59500  Processes options that have sub-menus
  70. '  TimedOut       63000  Write timed exit semaphore file
  71. '  TimeLock       60180  Check for TIME LOCK on certain features
  72. '  Transfer       62624  RBBS-PC support for external protocols for file transfer
  73. '  Toggle         57000  Toggles or views user options
  74. ' TwoByteDate     59200  Reduces a data to 2 byte string for space compression
  75. '  UnPackDate     59902  Uncompresses a 2 byte date
  76. '  UserColor      59965  Lets user set color for text and whether bold
  77. '  UserFace       59450  Processes programmable user interface
  78. '  ViewArc        64600  Display .ARC file contents to user
  79. '  PrivDoorRtn    62629  Private door exit routine
  80. '  WipeLine       58800  Wipes away a line so next prints in its place
  81. '  WordWrap       59710  Adjust a msg -- wrap lines and perserve paragraphs
  82. '
  83. '  $INCLUDE: 'RBBS-VAR.BAS'
  84. '
  85. * REPLACING old line(s) by new
  86. 57000 ' $SUBTITLE: 'Toggle - Toggle User Preferences'
  87. ' $PAGE
  88. '
  89. '  NAME    -- Toggle
  90. '
  91. '  INPUTS  -- ToggleOption      Option to toggle or view
  92. '                               according to the following:
  93. '    ToggleOption         PREFERENCE
  94. '   Toggle   VIEW
  95. * ------[ first line different ]------
  96. '     1       -1           AnsiEd Toggle
  97. '     2       -2           Bulletin review on logon
  98. '     3       -3           Case change
  99. '     4       -4           File review on logon
  100. '     5       -5           Highlight
  101. '     6       -6           Line feeds
  102. '     7       -7           Nulls
  103. '     8       -8           TurboKey
  104. '     9       -9           Expert
  105. '    10      -10           Bell
  106. '
  107. '  OUTPUTS -- ZSubParm   passed from TPut
  108. '
  109. '  PURPOSE -- Sets or views any single user preference value
  110. '
  111.       SUB Toggle (ToggleOption) STATIC
  112.       ZSubParm = 0
  113.       IF ToggleOption < 0 THEN _
  114.          GOTO 57005
  115.       ON ToggleOption GOSUB _
  116.          57010, _         'AnsiEd toggle
  117.          57120, _         'Bulletin review on logon
  118.          57260, _         'Case change
  119.          57150, _         'File review on logon
  120.          57040, _         'Highlight
  121.          57100, _         'Line feeds
  122.          57210, _         'Nulls
  123.          57230, _         'TurboKey
  124.          57190, _         'Expert
  125.          57170            'Bell
  126.       EXIT SUB
  127. * REPLACING old line(s) by new
  128. 57005 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  129.       ON -ToggleOption GOSUB _
  130. * ------[ first line different ]------
  131.          57030, _         'AnsiEd Toggle
  132.          57130, _         'Bulletin review on logon
  133.          57270, _         'Case change
  134.          57160, _         'File review on logon
  135.          57050, _         'Highlight
  136.          57110, _         'Line feeds
  137.          57220, _         'Nulls
  138.          57240, _         'TurboKey
  139.          57200, _         'Expert
  140.          57180            'Bell
  141.       EXIT SUB
  142. * REPLACING old line(s) by new
  143. 57010 ZFullScreenEditor = NOT ZFullScreenEditor      
  144. * DELETING old line(s)
  145. 57020
  146. * REPLACING old line(s) by new
  147. * ------[ first line different ]------
  148. 57030 CALL QuickTPut1 ("Full Screen Editor " + FNOffOn$(ZFullScreenEditor))
  149.       RETURN
  150. * REPLACING old line(s) by new
  151. 58200 ' $SUBTITLE: 'FMS - subroutine to search the upload management system'
  152. ' $PAGE
  153. '
  154. '  NAME    -- FMS
  155. '
  156. '  INPUTS  -- PARAMETER                      MEANING
  157. '             DirToSearch$          RBBS-PC "DIR" CATEGORY TO LOOK
  158. '                                     FOR
  159. '             SearchString$          STRING TO SEARCH FOR
  160. '             SearchDate$            DATE TO SEARCH FOR
  161. '             ZCategoryName$()
  162. '             ZCategoryCode$()
  163. '             ZCategoryDesc$()
  164. '             CatFound
  165. '             ZNumCategories
  166. '
  167. '  OUTPUTS -- ProcessedInFMS
  168. '             DnldFlag
  169. '
  170. '  PURPOSE -- To search the file management system and display the
  171. '             files being searched for as well as the catetory descriptions
  172. '
  173.       SUB FMS (DirToSearch$,SearchString$,SearchDate$, _
  174.                ProcessedInFMS,ZCategoryName$(1),ZCategoryCode$(1), _
  175.                ZCategoryDesc$(1),DnldFlag,CatFound,AbortIndex) STATIC
  176.       DnldFlag = 0
  177.       CALL SearchArray (DirToSearch$,ZCategoryName$(),ZNumCategories,CatFound)
  178.       ProcessedInFMS = ProcessedInFMS OR (CatFound > 0)
  179. * ------[ first line different ]------
  180. IF ZFG4$ <> "" THEN _
  181.     FG5$ = ZEscape$ + "[1;34;40m" : _
  182.     FG6$ = ZEscape$ + "[1;37;41m" : _
  183.     FG7$ = ZEscape$ + "[1;37;44m"         'Pe 02/05/90
  184.       IF ProcessedInFMS THEN _
  185.          ZSubParm = 5 : _
  186.          GOSUB 58202 : _
  187.      CALL QuickTPut("",1) : _
  188.      CALL QuickTPut(FG5$+"╔═"+FG6$+" "+DirToSearch$+" "+FG5$+"═══",0) : _
  189.      CALL QuickTPut(FG6$ +" "+ ZCategoryDesc$(CatFound) +" " + FG5$ + "════" + _
  190.             ZFG3$+" " +  SrchDir$,1) : _
  191.      CALL QuickTPut(FG5$+ "║",1)  : _
  192.      CALL QuickTPut("╚═"+FG7$+"File Name"+FG5$+"═════" + FG7$ + "Size" + _
  193.             FG5$+"═════",0) : _
  194.      CALL QuickTPut(FG7$+"Date"+FG5$+"════"+FG7$ + "Description"+ _
  195.           FG5$+"════════════════════════════"+ZFG3$+" "+ZEmphasizeOff$,1) : _
  196.      Cat$ = ZCategoryCode$(CatFound) : _
  197.      CALL DispUpDir (CAT$,SearchString$,SearchDate$,DnldFlag,AbortIndex)
  198.       EXIT SUB
  199. * REPLACING old line(s) by new
  200. 58202 ZOutTxt$ = SearchDate$
  201.       IF LEN(ZOutTxt$) > 0 THEN _
  202.          ZOutTxt$ = MID$(ZOutTxt$,3) + LEFT$(ZOutTxt$,2)
  203. * ------[ first line different ]------
  204.       SrchDir$ = SearchString$ + _
  205.              ZOutTxt$
  206.       IF SrchDir$ <> "" THEN _
  207.           SrchDir$ = ZFG4$ + "Scanning for "  + ZFG2$ + SrchDir$
  208.       RETURN
  209.       END SUB
  210. * REPLACING old line(s) by new
  211. 58250 ' $SUBTITLE: 'SmartText - smart text substitution'
  212. ' $PAGE
  213. '
  214. '  NAME    -- SmartText   (WRITTEN BY DOUG AZZARITO)
  215. '
  216. '  INPUTS  -- StringWork$        string to scan for Smart Text
  217. '             CRFound            Does this line contain a CR?
  218. '             ZSmartTextCode     Smart Text control code
  219. '
  220. '  OUTPUTS -- StringWork$        Input string with Smart replaced
  221. '
  222. '  PURPOSE -- Smart Text allows control strings in text files
  223. '             to be replaced at runtime with user info or other
  224. '             data.  The Smart Text control code is a 1-byte
  225. '             code (configurable) with a 2-byte action code.
  226. '
  227.       SUB SmartText (StringWork$, CRFound, OverStrike) STATIC
  228.       IF SmartCarry$<>"" THEN _
  229.          StringWork$ = SmartCarry$+StringWork$
  230.       Index = INSTR(StringWork$, ZSmartTextCode$)
  231.       WHILE Index > 0 AND Index < LEN(StringWork$)-1
  232.          IF INSTR(MID$(StringWork$, Index+1,2)," ") THEN _
  233.             SmartAct = 0 _
  234.          ELSE _
  235.             SmartAct = INSTR(ZSmartTable$, MID$(StringWork$, Index+1, 2))
  236.          IF SmartAct = 0 THEN _
  237.             WasI = 1 : _
  238.             GOTO 58254
  239.          SmartAct = (SmartAct+2)/3
  240.          ON SmartAct GOSUB 58260, 58261, 58262, 58263, 58264, 58265, _
  241.                            58266, 58267, 58268, 58269, 58270, _
  242.                            58271, 58272, 58273, 58274, 58275, _
  243.                            58276, 58277, 58278, 58279, 58280, _
  244.                            58281, 58282, 58283, 58284, 58285, _
  245.                            58286, 58287, 58289, 58290, 58291, _
  246. * ------[ first line different ]------
  247.                            58292, 58293, 58294, 58295, 58296, _
  248.                            58297, 58298, 58299, 58300, 58301, _
  249.                            58302, 58303, 58304, 58305, 58306
  250.          GOSUB 58256
  251. '         WasI = LEN(SmartHold$)                              'SM070301
  252.          ReplaceLen = 3
  253.          IF OverStrike OR Overlay THEN _
  254.             ReplaceLen = ReplaceLen + LEN(SmartHold$)         'SM070301
  255. '            IF WasI > 2 THEN _                               'SM070301
  256. '               ReplaceLen = WasI _                           'SM070301
  257. '            ELSE _                                           'SM070301
  258. '               SmartHold$ = SmartHold$ + SPACE$(3 - WasI)    'SM070301
  259.          StringWork$ = LEFT$(StringWork$, Index-1) + SmartHold$ + _
  260.                        MID$(StringWork$,Index+ReplaceLen)
  261. * REPLACING old line(s) by new
  262. 58273 SmartHold$ = ZCityState$              ' CT Users CITY & STATE
  263. * ------[ first line different ]------
  264.       CALL Trim (SmartHold$)                                         ' DD032301
  265.       RETURN
  266. * REPLACING old line(s) by new
  267. 58295 SmartHold$ = ZConfName$               ' CN Conference Name
  268.       RETURN
  269. * ------[ first line different ]------
  270. * INSERTING new line(s)
  271. 58296 SmartHold$ = ZFG5$                                          ' DD061303
  272.       GOTO 58258                                                  ' DD061303
  273. 58297 SmartHold$ = ZFG6$                                          ' DD061303
  274.       GOTO 58258                                                  ' DD061303
  275. 58298 SmartHold$ = ZFG7$                                          ' DD061303
  276.       GOTO 58258                                                  ' DD061303
  277. 58299 SmartHold$ = ZFG8$                                          ' DD061303
  278.       GOTO 58258                                                  ' DD061303
  279. * REPLACING old line(s) by new
  280. * ------[ first line different ]------
  281. 58300 SmartHold$ = ZFG9$                                          ' DD061303
  282.       GOTO 58258                                                  ' DD061303
  283. * REPLACING old line(s) by new
  284. * ------[ first line different ]------
  285. 58301 SmartHold$ = ZFGA$                                          ' DD061303
  286.       GOTO 58258                                                  ' DD061303
  287. * REPLACING old line(s) by new
  288. * ------[ first line different ]------
  289. 58302 SmartHold$ = ZFGB$                                          ' DD061303
  290.       GOTO 58258                                                  ' DD061303
  291. * REPLACING old line(s) by new
  292. * ------[ first line different ]------
  293. 58303 SmartHold$ = ZFGC$                                          ' DD061303
  294.       GOTO 58258                                                  ' DD061303
  295. * REPLACING old line(s) by new
  296. * ------[ first line different ]------
  297. 58304 SmartHold$ = ZFGD$                                          ' DD061303
  298.       GOTO 58258                                                  ' DD061303
  299. * REPLACING old line(s) by new
  300. * ------[ first line different ]------
  301. 58305 SmartHold$ = ZFGE$                                          ' DD061303
  302.       GOTO 58258                                                  ' DD061303
  303. * INSERTING new line(s)
  304. 58306 SmartHold$ = ZFGF$                                          ' DD061303
  305.       GOTO 58258                                                  ' DD061303
  306.       END SUB
  307. '
  308. 'Line numbers changed from 58300-58307 to 58350-58357 'Pe 06/21/92
  309. '  to allow additional SmartText Colors
  310. '
  311. * DELETING old line(s)
  312. 58307
  313. * INSERTING new line(s)
  314. 58350 ' $SUBTITLE: 'BufString - write a string with imbedded ZCR/LF'
  315. ' $PAGE
  316. '
  317. '  NAME    -- BufString
  318. '
  319. '  INPUTS  -- PARAMETER                      MEANING
  320. '             Strng$                  STRING TO BE WRITTEN OUT
  321. '             DataSize               LENGTH OF STRING - # LEFT
  322. '                                        CHARS TO OUTPUT
  323. '
  324. '  OUTPUTS -- Strng$                  IS WRITTEN TO THE USER
  325. '
  326. '  PURPOSE -- To search the string, Strng$, for embedded carriage
  327. '             returns and line feeds and write out each line with
  328. '             the appropriate substitution (cr/lf if to the local
  329. '             screen or cr/nulls/lf if to the communications port).
  330. '
  331.       SUB BufString (Strng$,PassedDataSize,AbortIndex) STATIC
  332.       WasL = LEN(Strng$)
  333.       IF PassedDataSize < WasL THEN _
  334.          WasL = PassedDataSize
  335.       IF WasL < 1 THEN _
  336.          EXIT SUB
  337.       ZFF = ZPageLength - 1
  338.       StartByte = 1
  339.       ZRet = ZFalse
  340.       IF CarryOver THEN _
  341.          IF ASC(Strng$) = 10 THEN _
  342.             StartByte = 2 : _
  343.             CALL SkipLine (1+ZJumpSearching)
  344.       CarryOver = (MID$(Strng$,WasL,1) = ZCarriageReturn$)
  345.       WasL = WasL + CarryOver
  346. 58351 CRat = INSTR(StartByte,Strng$,ZCarriageReturn$)
  347.       IF CRat > 0 AND CRat < WasL THEN _
  348.          CRFound = (MID$(Strng$,CRat + 1,1) = ZLineFeed$) _
  349.       ELSE CRFound = ZFalse
  350.       EOLlen = -2 * CRFound
  351.       IF CRFound THEN _
  352.          EOD = CRat _
  353.       ELSE EOD = WasL + 1
  354.       NumBytes = EOD - StartByte
  355.       StringWork$ = MID$(Strng$,StartByte,NumBytes)
  356.       IF NOT ZDeleteInvalid THEN _
  357.          GOTO 58352
  358.       Index = INSTR(StringWork$,"[")
  359.       WasJ = LEN(StringWork$) - 1
  360.       WHILE Index > 0 AND Index < WasJ
  361.          IF MID$(StringWork$,Index + 2,1) = "]" THEN _
  362.             IF INSTR (ZInvalidOpts$,MID$(StringWork$,Index + 1,1)) THEN _
  363.                MID$(StringWork$,Index + 1,1) = "*"
  364.          Index = INSTR(Index + 1,StringWork$,"[")
  365.       WEND
  366. 58352 IF ZJumpSearching THEN _
  367.          Temp$ = StringWork$ : _
  368.          CALL AllCaps (Temp$) : _
  369.          HiLitePos = INSTR (Temp$,ZJumpTo$) : _
  370.          IF HiLitePos = 0 THEN _
  371.             GOTO 58357 _
  372.          ELSE CALL Bracket (StringWork$,HiLitePos,HiLitePos+LEN(ZJumpTo$)-1,ZEmphasizeOn$,ZEmphasizeOff$) : _
  373.               ZJumpSearching = ZFalse
  374.       IF ZSmartTextCode THEN _
  375.          CALL SmartText (StringWork$, CRFound, ZFalse)
  376.       IF NOT ZLocalUser THEN _
  377.          CALL EofComm (Char) : _
  378.          IF Char <> -1 THEN _
  379.             GOTO 58353            ' comm port input
  380.       ZKeyboardStack$ = INKEY$ : _
  381.       IF ZKeyboardStack$ <> "" THEN _  ' keyboard input
  382.          GOTO 58353
  383.       CALL QuickTPut (StringWork$, - (CRFound))
  384.       GOTO 58354
  385. 58353 ZOutTxt$ = StringWork$
  386.       ZSubParm = 4
  387.       IF CRFound THEN ZSubParm = 5
  388.       CALL TPut
  389. 58354 IF ZRet THEN _
  390.          EXIT SUB
  391.       IF ZLinesPrinted < ZFF THEN _
  392.          GOTO 58357
  393. 58355 CALL CheckTimeRemain (MinsRemaining)
  394.       CALL CheckCarrier
  395.       IF ZSubParm = -1 THEN _
  396.          EXIT SUB
  397.       IF ZNonStop THEN _
  398.          GOTO 58357
  399.       IF NOT CRFound THEN _
  400.          GOTO 58357
  401.       ZForceKeyboard = ZTrue
  402.       CALL AskMore ("",ZTrue,ZFalse,AbortIndex,ZStopInterrupts)
  403.       IF ZNo THEN _
  404.          ZRet = ZTrue : _
  405.          EXIT SUB
  406. 58357 StartByte = EOD + EOLlen
  407.       IF StartByte <= WasL THEN _
  408.          GOTO 58351
  409.       END SUB
  410. * REPLACING old line(s) by new
  411. 58400 ' $SUBTITLE: 'BufFile - subroutine to write a sequential file to the user'
  412. ' $PAGE
  413. '
  414. '  NAME    -- BufFile
  415. '
  416. '  INPUTS  -- PARAMETER                      MEANING
  417. '             FileSpec$               NAME OF THE FILE TO WRITE TO
  418. '                                                OUT TO THE USER
  419. '
  420. '  OUTPUTS -- NONE                    FILE IS WRITTEN TO THE USER
  421. '
  422. '  PURPOSE -- To display a sequential file to the user
  423. '
  424.       SUB BufFile (FilName$,AbortIndex) STATIC
  425.       CALL FindIt (FilName$)
  426.       IF NOT ZOK THEN _
  427.          GOTO 58419
  428.       ZNo = ZFalse
  429.       CALL OpenRSeq (FilName$,NumRecs,LenLastRec,ZBufferSize)
  430.       IF ZErrCode > 0 THEN _
  431.          GOTO 58419
  432.       DataSize = ZBufferSize
  433.       FIELD 2, DataSize AS SeqRec$
  434.       ZNonStop = ZNonStop OR (ZPageLength < 1)
  435.       ZJumpLast$ = ""
  436.       ZJumpSearching = ZFalse
  437.       ZJumpSupported = ZTrue
  438.       IF NOT ZStopInterrupts THEN _
  439.          IF NOT ZConcatFIles THEN _
  440.             IF NOT ZNonStop THEN _
  441.                ZOutTxt$ = "* Ctrl-K(^K) / ^X aborts. ^S suspends ^Q resumes *" : _
  442.                ZSubParm = 2 : _
  443.                CALL TPut
  444. * ------[ first line different ]------
  445. IF ZSubParm = -1 THEN _
  446.      EXIT SUB               'Pe 02/09/90
  447.       WasTU = 0
  448. * REPLACING old line(s) by new
  449. 58419 CLOSE 2
  450. * ------[ first line different ]------
  451.       ZBypassTimeCheck = ZFalse
  452.       ZStopInterrupts = ZFalse
  453.       CALL QuickTPut (ZEmphasizeOff$,0)
  454.       ZJumpSupported = ZFalse
  455.       END SUB
  456. * REPLACING old line(s) by new
  457. 58700 ' $SUBTITLE: 'RotorsDir - search thru a list of subdirs for a file'
  458. ' $PAGE
  459. '
  460. '  NAME    -- RotorsDir
  461. '
  462. '  INPUTS  --     PARAMETER                    MEANING
  463. '             FilName$                  FILE NAME TO LOOK FOR
  464. '             SDIR.ARA                  ARRAY OF SUBDIRECTORIES
  465. '             MaxSearch                 MAX # OF SUBDIRECTORIES
  466. '             MarkingTime               WHETHER TO MARK TIME
  467. '
  468. '  OUTPUTS -- FNAME$                    ADD SUBDIRECTORY TO THE
  469. '                                       FILE NAME IF FOUND.  OTHER-
  470. '                                       WISE DON'T.
  471. '             ZOK                       TRUE IF FILE WAS Found
  472. '
  473. '  PURPOSE -- Hunt through a list of subdirectories to determine
  474. '             if a file is in any of them.  If file is found, open
  475. '             the file as file #2, add the drive/path to the file
  476. '             name, and sets ZOK to true.  If file isn't found, set
  477. '             file name to the last subdirectory searched -- which
  478. '             should be the upload subdirectory.
  479. '
  480. '             If the library menu is selected (ZMenuIndex = 6), then
  481. '             only 2 subdirectories are searched. The first being
  482. '             the work disk and the second being the selected
  483. '             library disk.
  484. '
  485.       SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC
  486. * ------[ first line different ]------
  487.       CALL Carrier
  488.       IF ZSubParm = -1 THEN _   'Pe 01/04/89
  489.       EXIT SUB                              'Pe 01/04/89
  490.       ZOK = ZFalse
  491.       ZDotFlag = ZFalse
  492.       IF MarkingTime THEN _
  493.          CALL QuickTPut ("Searching for "+FilName$,0)
  494.       NumSearch = 1
  495.       WasX = 0
  496.   WasX$ = ZArkViewPath$ + FilName$  'Pe 08/15/91
  497.          CALL FindFile (WasX$,ZOK)  'Pe 08/15/91
  498.           IF ZOK THEN _             'Pe 08/15/91
  499.           GOTO 58710                'Pe 08/15/91
  500.       WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _
  501.          SDirAra$(NumSearch) <> ""
  502.          IF MarkingTime THEN _
  503.             CALL MarkTime (WasX)
  504.          WasX$ = SDirAra$(NumSearch) + _
  505.               FilName$
  506.          CALL FindFile (WasX$,ZOK)
  507.          NumSearch = NumSearch + 1
  508.       WEND
  509.       IF ZOK OR NOT ZFastFileSearch THEN _
  510.          GOTO 58710
  511. '* ------[ first line different ]------
  512.       CALL OpenRSeq (ZFastFileList$,HighRec,WasX,21)                 ' WM050501
  513.       FIELD #2, 12 AS SearchFile$, _                                 ' WM050501
  514.                  4 AS SearchPath$, _                                 ' WM050501
  515.                  3 AS SearchDate$, _                                 ' WM050501
  516.                  2 AS SearchCrLf$                                    ' WM050501
  517.       IF ZErrCode <> 0 THEN _
  518.          GOTO 58710
  519.       CALL TrimTrail (FilName$,".")
  520.       CALL BinSearch (FilName$,1,12,21,HighRec,RecFoundAt,RecFound$) ' WM050501
  521.       ZOK = (RecFoundAt > 0)
  522.       IF NOT ZOK THEN _
  523.          GOTO 58710
  524.       ZOK = ZFalse
  525.       CALL CheckInt (MID$(RecFound$,13,4))
  526.       IF ZTestedIntValue < 1 THEN _
  527.          GOTO 58710
  528.       WasDX$ = DATE$                                                 ' Pe081091
  529.       LSET SearchDate$ = CHR$ (VAL (MID$ (WasDX$, 9, 2)) - 48) + _   ' Pe081091
  530.                          CHR$ (VAL (MID$ (WasDX$, 1, 2)) + 31) + _   ' Pe081091
  531.                          CHR$ (VAL (MID$ (WasDX$, 4, 2)) + 31)       ' Pe081091
  532.       PUT 2, RecFoundAt                                              ' WM050501
  533.       CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66)
  534.       IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _
  535.          GOTO 58710
  536.       FIELD 2, 66 AS LocatorRec$
  537.       GET 2, ZTestedIntValue
  538.       Temp$ = WasX$
  539.       WasX$ = LEFT$(LocatorRec$,63)
  540.       CALL Trim (WasX$)
  541.       IF LEFT$(WasX$,2) = "M!" THEN _
  542.          ZOK = ZFalse : _
  543.          ZGSRAra$(1) = PassToMacro$ : _
  544.          WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _
  545.          CALL Trim (WasX$) : _
  546.          ZFileLocation$ = "" : _
  547.          CALL MacroExe (WasX$) : _
  548.          IF ZFileLocation$ = "" THEN _
  549.             ZOK = ZFalse : _
  550.             WasX$ = Temp$ : _
  551.             GOTO 58710 _
  552.          ELSE WasX$ = ZFileLocation$
  553.       WasX$ = WasX$ + FilName$
  554.       CALL FindFile (WasX$,ZOK)
  555.       IF NOT ZOK THEN _
  556.          WasX$ = SDirAra$(MaxSearch) + FilName$
  557.       GOTO 58710
  558. * DELETING old line(s)
  559. 58705
  560. * REPLACING old line(s) by new
  561. * ------[ first line different ]------
  562. 58900 If ZEndList = ZTrue Then _     'Lk11/29/91
  563.       Exit Sub                       'Lk 11/29/91
  564.       ZOutTxt$ = ZDirPrompt$
  565.       ZMacroMin = 2
  566.       CALL PopCmdStack
  567.       IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  568.          EXIT SUB
  569.       CALL AraAllCaps (ZUserIn$(),ZAnsIndex)
  570.       IF ZUserIn$(ZAnsIndex) = "Q" THEN _
  571.          ZWasQ = 0 : _
  572.          EXIT SUB
  573.       ZWasA = INSTR("E+.E-.E.L.H.?.",ZUserIn$(ZAnsIndex)+".")
  574.       IF ZWasA = 0 THEN _
  575.          EXIT SUB
  576.       IF ZWasA > 8 THEN _
  577.          IF ZAnsIndex < ZLastIndex THEN _
  578.             GOTO 58900 _
  579.          ELSE GOTO 58902
  580.       IF ZWasA = 7 THEN _
  581.          ZExtendedOff = NOT ZExtendedOff _
  582.       ELSE ZExtendedOff = (ZWasA > 3)
  583.       CALL QuickTPut1 ("Extended directory display "+FNOffOn$(NOT ZExtendedOff))
  584.       GOTO 58900
  585. * DELETING old line(s)
  586. 59100
  587. 59102
  588. 59104
  589. 59106
  590. 59108
  591. 59110
  592. 59112
  593. 59114
  594. * REPLACING old line(s) by new
  595. 59456 ZFileName$ = ZCurPUI$
  596.       CALL Graphic (ZFileName$)
  597.       IF NOT ZOK THEN _
  598.          CALL UpdtCalr ("Missing menu " + ZCurPUI$,2) : _
  599.          ZCurPUI$ = ZPrevPUI$ : _
  600.          GOTO 59456
  601.       CALL BreakFileName(ZFileName$,ZWasZ$,ZActiveMenu$,ZWasZ$,ZTrue)
  602.       ZActiveMenu$ = LEFT$(ZActiveMenu$,1)
  603.       LSET ZLastCommand$ = ZActiveMenu$ + " "
  604.       ZPrevPUI$ = ZCurPUI$
  605.       LINE INPUT #2,ZFileName$
  606. * ------[ first line different ]------
  607. '     LINE INPUT #2,Prompt$                'SM091926
  608.       INPUT #2,Prompt$                    'SM091926
  609.       INPUT #2,ValidChoice$,ActualCommands$
  610.       LINE INPUT #2,MenuChoice$
  611.       LINE INPUT #2,MenuName$
  612.       LINE INPUT #2,QuitCmd$
  613. '     LINE INPUT #2,QuitPrompt$                'SM091926
  614.       INPUT #2,QuitPrompt$                'SM091926
  615.       LINE INPUT #2,QuitSubCmds$
  616.       LINE INPUT #2,QuitMenuOpt$
  617.       LINE INPUT #2,QuitMenus$
  618.       CALL Graphic (ZFileName$)
  619.       CALL BreakFileName (ZFileName$,MenuDrvPath$,WasX$,ZWasY$,ZTrue)
  620.       MenuToDisplay$ = ZFileName$
  621.       WasJ = INSTR(ZOrigCommands$,"?")
  622.       IF WasJ < 1 THEN _
  623.          WasX$ = "" _
  624.       ELSE WasX$ = MID$(ZAllOpts$,WasJ,1)
  625. * REPLACING old line(s) by new
  626. 59458 IF ZExpertUser THEN _
  627. * ------[ first line different ]------
  628.   Call QuickTPut (ZConfName$ + ": ",0) : _
  629.   CALL DispTimeRemain (TimeRemaining!) : _
  630.               GOTO 59461
  631. * REPLACING old line(s) by new
  632. 59460 ZNonStop = (ZPageLength < 1)
  633. * ------[ first line different ]------
  634.      ZDeleteInvalid = ZTrue   'Pe 01/08/90
  635.      CALL BufFile (MenuToDisplay$,WasX)
  636.      ZDeleteInvalid = ZFalse  'Pe 01/08/90
  637.      CALL Line25               'Pe 01/13/90
  638. Call QuickTput (ZConfName$ + ": ",0)
  639.    CALL DispTimeRemain (TimeRemaining!) 'Pe time mod  Moved line number down 04/02/90
  640. * REPLACING old line(s) by new
  641. 59461 MID$(ZLastCommand$,2,1) = " "
  642.       ZOutTxt$ = Prompt$
  643.       ZTurboKey = -ZTurboKeyUser
  644.       CALL PopCmdStack
  645.       IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  646.          EXIT SUB
  647.       IF ZWasQ = 0 THEN _
  648. * ------[ first line different ]------
  649.          GOTO 59461
  650. * REPLACING old line(s) by new
  651. * ------[ first line different ]------
  652. 59492 CALL Putcom (CHR$(7))   'Pe 04/25/92
  653.       CALL QuickTPut1 ("No such option <" + ZWasZ$ + ">")
  654.       Call FlushKeys
  655.       GOTO 59460
  656.       END SUB
  657. * REPLACING old line(s) by new
  658. 59530 ZWasZ$ = ZUserIn$(ZAnsIndex)
  659.       CALL AllCaps (ZWasZ$)
  660. * ------[ first line different ]------
  661.            IF INSTR(ReturnOn$,","+ZWasZ$+",") THEN _  'check if calling pgm wants
  662.          EXIT SUB
  663.       IF INSTR("LH?",ZWasZ$) THEN _       'check whether caller wants help
  664.          GOTO 59515
  665.       IF INSTR(ZWasZ$,".") > 0 THEN _
  666.          GOTO 59532
  667.       CALL BadFile (ZWasZ$,WasBF)
  668.       IF WasBF > 1 THEN _
  669.          GOTO 59532
  670.       FPre$ = MenuFront$   ' check for sub-option
  671.       PreSuf$ = "-"
  672.       CALL BadFile (FPRE$ + ZWasZ$ + "-",WasBF)
  673.       ZOK = ZFalse
  674.       IF WasBF < 2 THEN _
  675.          VerifyInMenu = ZFalse : _
  676.          GOSUB 59538
  677.       PreSuf$ = ""
  678.       VerifyInMenu = PassedVerifyInMenu
  679.       IF NOT ZOK THEN _
  680.          FPre$ = FrontOpt$ : _    ' check standard option
  681.          GOSUB 59538 : _
  682.          IF NOT ZOK THEN _    ' check option where menu is
  683.             FPre$ = MenuDrv$ + FrontPre$ : _
  684.             IF FrontOpt$ <> FPre$ THEN _
  685.                GOSUB 59538
  686.       IF NewMenu THEN _
  687.          NewMenu = ZFalse : _
  688.          GOTO 59515
  689.       IF ZOK THEN _
  690.          EXIT SUB
  691. * REPLACING old line(s) by new
  692. 59703 ' $SUBTITLE: 'WordWrap -- subroutine to wrap lines in a message'
  693. ' $PAGE
  694. '
  695. '  NAME    -- WordWrap
  696. '
  697. '  INPUTS  --   PARAMETER     MEANING
  698. '               MaxLen       MAXIMUM LENGTH OF A SINGLE LINE
  699. '               NumLines     NUMBER OF LINES IN A MESSAGE
  700. '               LineAra$     ALL THE LINES IN THE MESSAGE
  701. '
  702. '  OUTPUTS --   NumLines
  703. '               LineAra$
  704. '
  705. '  PURPOSE -- Batch adjusts a message, wrapping lines if
  706. '             needed.  Preserves paragraph structure.
  707. '
  708.       SUB WordWrap (MaxLen,NumLines,LineAra$(1)) STATIC
  709.       WasJ = 1
  710. * ------[ first line different ]------
  711.       SplitOn = 1  + .4 * MaxLen
  712.       WHILE WasJ <= NumLines and NumLines < ZMaxMsgLines  'Pe 08/04/91
  713.          ReFormatted = ZFalse
  714. * REPLACING old line(s) by new
  715. 59780 ' $SUBTITLE: 'GetAll -- subroutine to create directory list'
  716. ' $PAGE
  717. '
  718. '  NAME    -- GetAll
  719. '
  720. '  INPUTS  --   PARAMETER     MEANING
  721. '               LookIn$       NAME OF FILE TO SEARCH
  722. '               DIR.EXT$      MAIN DIRECTORY EXTENSION TO USE
  723. '               StartPos      Last POSITION USED IN ARRAY
  724. '
  725. '  OUTPUTS      StartPos     Last ELEMENT USED IN ARRAY
  726. '               LoadInto$    ARRAY TO LOAD ELEMENTS Found
  727. '
  728. '  PURPOSE -- Creates a list (LoadInto$) of all directories
  729. * ------[ first line different ]------
  730. '             to be listed when A)ll is selected for a directory.
  731. '             All uses config parm, which can be either a single
  732. '             directory or list of directories (begin with "@").
  733. '
  734.       SUB GetAll (LoadInto$(1), StartPos) STATIC
  735.       IF ZMasterDirName$ <> "" AND LEFT$(ZMasterDirName$,1) <> "@" THEN _
  736.          StartPos = StartPos + 1 : _
  737.          LoadInto$(StartPos) = ZMasterDirName$ : _
  738.          EXIT SUB
  739.       ZOK = ZFalse
  740.       IF LEN (ZMasterDirName$) > 1 AND LEFT$(ZMasterDirName$,1) = "@" THEN _
  741.          CALL FindIt(MID$(ZMasterDirName$,2))
  742.       IF NOT ZOK THEN _
  743.          CALL QuickTPut1 ("No dirs defined for A)ll") : _
  744.          EXIT SUB
  745.       MaxLoad = UBOUND(LoadInto$, 1)
  746.       StartSort = StartPos + 1
  747.       WHILE NOT EOF(2) AND StartPos < MaxLoad
  748.          LINE INPUT #2, ZOutTxt$
  749.          StartPos = StartPos + 1
  750.          LoadInto$(StartPos) = ZOutTxt$
  751.       WEND
  752.       CLOSE 2
  753.       END SUB
  754. * REPLACING old line(s) by new
  755. 59851 IF NOT ZOK THEN _
  756.          GOTO 59856 _
  757.       ELSE IF EOF(2) THEN _
  758.               IF LogicalEOF$ = "" OR SkipParms = 0 THEN _
  759.                  GOTO 59856 _
  760.               ELSE CALL FindIt (ZConfMailList$) : _
  761.                    SkipParms = 0 : _
  762.                    GOTO 59851
  763.          CALL ReadAny
  764.          ZActiveUserFile$ = ZOutTxt$
  765.          CALL ReadAny
  766.          IF ZErrCode > 0 THEN _
  767.             GOTO 59856
  768.          SkipParms = SkipParms + 2
  769.          ZActiveMessageFile$ = ZOutTxt$
  770.          CALL FindFile (ZActiveUserFile$,ZOK)
  771.          IF NOT ZOK THEN _
  772.             GOTO 59856
  773. * ------[ first line different ]------
  774.          CALL OpenUser (ZHighestUserRecord)
  775.          FIELD 5, 128 AS ZUserRecord$
  776.          CALL FindFile (ZActiveMessageFile$,ZOK)
  777.          IF NOT ZOK THEN _
  778.             GOTO 59856
  779.          CALL FindUser (ZOrigUserName$,"",ZStartHash,ZLenHash,_
  780.                         0,0,ZHighestUserRecord,_
  781.                         Found,HoldUserFileIndex,ZWasSL)
  782.          IF NOT Found THEN _
  783.             GOTO 59853
  784.          CALL OpenMsg
  785.          FIELD 1, 128 AS ZMsgRec$
  786.          GET 1,1
  787.          AnyMail = ZTrue
  788.          WasX = CVI(MID$(ZUserRecord$,57,2))
  789.          FileWait = (WasX AND 4096) > 0
  790.          WasX = (WasX AND 512) > 0
  791.          CALL BreakFileName (ZActiveUserFile$,WasX$,CurPre$,CurExt$,ZFalse)
  792.          InCur = (CurPre$ = NowInPre$ AND CurExt$ = NowInExt$)
  793. * REPLACING old line(s) by new
  794. 59860 CALL QuickTPut (ZEmphasizeOff$,0)
  795.       IF CantInterrupt THEN _
  796.          ZTurboKey = 2 : _
  797.          ZForceKeyboard = ZTrue : _
  798.          ZOutTxt$ = "Press any key to continue" _
  799.       ELSE GOSUB 59870 : _
  800.            ZOutTxt$ = ZMorePrompt$ + Temp$ + ExtraPrompt$ + LEFT$(">",-ZExpertUser)
  801.       WasX = LEN(ZOutTxt$) + 2
  802.       ZNoAdvance = OverWrite
  803.       ZSubParm = 1
  804.       IF ExtraPrompt$ = "" AND ZTurboKey = 0 THEN _
  805.          ZTurboKey = -ZTurboKeyUser
  806.       ZMacroMin = 2
  807.       CALL TGet
  808.       IF ZSubParm = -1 THEN _
  809.         EXIT SUB
  810.       ZTurboKey = ZFalse
  811.       ZWasDF$ = ZUserIn$ (1)
  812.       CALL AllCaps (ZWasDF$)
  813.       WasI = INSTR(";C;A;",";"+ZWasDF$+";")
  814.       IF WasI = 1 THEN _
  815.          ZNonStop = ZTrue : _
  816.          ZWasQ = 0
  817.       CALL WipeLine (WasX + LEN(ZUserIn$))
  818.       IF NOT ZHiLiteOff THEN _
  819.          CALL QuickTPut (ZLastSmartColor$,0)
  820. * ------[ first line different ]------
  821.          CALL QuickTput (ZEmphaSizeOFF$,0)      'Lk 07/16/90
  822.       IF CantInterrupt THEN _
  823.          ZNo = ZFalse : _
  824.          EXIT SUB
  825.       IF WasI = 3 THEN _
  826.          ZLastIndex = 0 : _
  827.          AbortIndex = 32000
  828.       IF ZNo THEN _
  829.          ZKeyboardStack$ = "" : _
  830.          ZCommPortStack$ = "" : _
  831.          ZLastSmartColor$ = ""
  832.       IF NOT ZJumpSupported THEN _
  833.          EXIT SUB
  834.       IF ZWasDF$ = "J" THEN _
  835.          IF ZWasQ > 1 THEN _
  836.             ZUserIn$ = ZUserIn$(2) : _
  837.             GOTO 59866 _
  838.          ELSE ZOutTxt$ = "Jump to what text" + ZPressEnterExpert$ : _
  839.               CALL PopCmdStack : _
  840.               IF ZWasQ = 0 THEN _
  841.                  EXIT SUB _
  842.               ELSE GOTO 59866
  843.       IF ZWasDF$ <> "R" THEN _
  844.          EXIT SUB
  845.       ZUserIn$ = ZJumpLast$
  846. * REPLACING old line(s) by new
  847. 59921 Strng$ = ZDR1$ + LEFT$(Strng$,13) + ZDR2$ + MID$(Strng$,14,10) + _
  848. * ------[ first line different ]------
  849.                ZDR3$ + MID$(Strng$,24,10) + ZDR4$ + MID$(Strng$,34,ZMaxDescLen) + _
  850.                ZEmphasizeoff$         'Pe 03/15/92
  851.       EXIT SUB
  852. * REPLACING old line(s) by new
  853. 59934 ' $SUBTITLE: 'SetHiLite - subroutine to reset highlight preference'
  854. ' $PAGE
  855. '
  856. '  NAME    --  SetHiLite
  857. '
  858. '  INPUTS  --  PARAMETER                   MEANING
  859. '              SetTo              New value (True or False)
  860. '              ZEmphasizeOnDef$   String turns emphasize on
  861. '              ZEmphasizeOffDef$  String turns emphasize off
  862. '
  863. '  OUTPUTS --  ZHiLiteOff       Callers preference on Hilite
  864. '              ZEmphasizeOn$       String to use for emphasis
  865. '              ZEmphasizeOff$      String to use after emphasis
  866. '
  867.       SUB SetHiLite (SetTo) STATIC
  868.       ZHiLiteOff = (ZEmphasizeOnDef$ <> "" AND SetTo)
  869.       IF ZHiLiteOff THEN _
  870.          ZEmphasizeOn$ = "" : _
  871.          ZEmphasizeOff$ = "" : _
  872.          ZFG1$ = "" : _
  873.          ZFG2$ = "" : _
  874.          ZFG3$ = "" : _
  875. * ------[ first line different ]------
  876.          ZFG4$ = "" : _                                              ' DD061303/COLR
  877.          ZFG5$ = "" : _                                              ' DD061303/COLR
  878.          ZFG6$ = "" : _                                              ' DD061303/COLR
  879.          ZFG7$ = "" : _                                              ' DD061303/COLR
  880.          ZFG8$ = "" : _                                              ' DD061303/COLR
  881.          ZFG9$ = "" : _                                              ' DD061303/COLR
  882.          ZFGA$ = "" : _                                              ' DD061303/COLR
  883.          ZFGB$ = "" : _                                              ' DD061303/COLR
  884.          ZFGC$ = "" : _                                              ' DD061303/COLR
  885.          ZFGD$ = "" : _                                              ' DD061303/COLR
  886.          ZFGE$ = "" _                                                ' DD061303/COLR
  887.       ELSE ZEmphasizeOn$ = ZEmphasizeOnDef$ : _
  888.            ZFG1$ = ZFG1Def$ : _
  889.            ZFG2$ = ZFG2Def$ : _
  890.            ZFG3$ = ZFG3Def$ : _
  891.            ZFG4$ = ZFG4Def$ : _                                      ' DD061303/COLR
  892.            ZFG5$ = ZEscape$ + "[1;34;40m" : _     'Brt Blue          ' DD061303/COLR
  893.            ZFG6$ = ZEscape$ + "[1;35;40m" : _     'Brt Magenta       ' DD061303/COLR
  894.            ZFG7$ = ZEscape$ + "[1;33;44m" : _     'Yellow/Blue       ' DD061303/COLR
  895.            ZFG8$ = ZEscape$ + "[1;33;42m" : _     'Yellow/Green      ' DD061303/COLR
  896.            ZFG9$ = ZEscape$ + "[1;33;41m" : _     'Yellow/Red        ' DD061303/COLR
  897.            ZFGA$ = ZEscape$ + "[1;33;45m" : _     'Yellow/Magenta    ' DD061303/COLR
  898.            ZFGB$ = ZEscape$ + "[1;37;44m" : _     'White/Blue        ' DD061303/COLR
  899.            ZFGC$ = ZEscape$ + "[1;37;42m" : _     'White/Green       ' DD061303/COLR
  900.            ZFGD$ = ZEscape$ + "[1;37;41m" : _     'White/Red         ' DD061303/COLR
  901.            ZFGE$ = ZEscape$ + "[1;37;45m" : _     'White/Magenta     ' DD061303/COLR
  902.            ZFGF$ = ZEscape$ + "[1;36;44m"         'Brt Cyan/Blue     ' DD061303/COLR
  903.       END SUB
  904. * REPLACING old line(s) by new
  905. 59940 ' $SUBTITLE: 'ColorPrompt - subroutine to colorize prompts'
  906. ' $PAGE
  907. '
  908. '  NAME    --  ColorPrompt
  909. '
  910. '  INPUTS  --  PARAMETER                   MEANING
  911. '              Strng$              String to colorize
  912. '              ZHiLiteOff          Whether highlighting is off
  913. '              ZEmphasizeOn$       String to use for emphasis
  914. '              ZEmphasizeOff$      String to use after emphasis
  915. '
  916. '  OUTPUTS --  Strng$              Colorized string
  917. '
  918. '  PURPOSE -- colorizes a string based on sysop settings
  919. '             and the string.
  920. '                        [...] is the default - put in emphasis
  921. '                        <...> options to type - put in ZFG4$
  922. '                        and first two preceeding words use ZFG1$ and ZFG2$
  923. '                        options identified on right by ) and on
  924. '                        left by space or comma - put in ZFG4$
  925. '
  926.       SUB ColorPrompt (Strng$) STATIC
  927. * ------[ first line different ]------
  928.       CALL SmartText(Strng$,ZTrue,ZFalse)        'SM091927
  929.       IF ZHiLiteOff THEN _
  930.          EXIT SUB
  931.       AlreadyColorized = (INSTR(Strng$,ZEscape$) > 0)
  932.       WasX = INSTR(Strng$,"<")
  933.       IF WasX > 0 THEN _
  934.          GOTO 59943
  935.       WasX = INSTR(Strng$,"[")   ' highlight default
  936.       IF WasX > 0 THEN _
  937.          WasY = INSTR(WasX,Strng$,"]") : _
  938.          IF WasY > 0 THEN _
  939.             CALL FindLast (LEFT$(Strng$,WasY),"[",WasX,Temp) : _
  940.             CALL Bracket (Strng$,WasX,WasY,ZEmphasizeOn$,ZEmphasizeOff$)
  941.       IF AlreadyColorized THEN _
  942.          EXIT SUB
  943.       WasX = INSTR(Strng$,"<")
  944.       IF WasX < 1 THEN _
  945.          GOTO 59945
  946. * REPLACING old line(s) by new
  947. 59965 ' $SUBTITLE: 'UserColor - lets user set color for normal text'
  948. ' $PAGE
  949. '
  950. '  NAME    --  UserColor
  951. '
  952. '  INPUTS  --  PARAMETER                   MEANING
  953. '              ZEmphasizeOff$            Normal text color
  954. '
  955. '  OUTPUTS --  ZEmphasizeOff$            New text color
  956. '              ZBoldText$                Whether bold (0 not, 1 bold)
  957. '              ZUserTextColor            ANSI Color selected
  958. '
  959. '  PURPOSE --  Lets caller select desired color and whether bold.
  960. '
  961.       SUB UserColor STATIC
  962.       IF ZHiLiteOff THEN _
  963. * ------[ first line different ]------
  964.          EXIT SUB _                                                  ' DD061303/COLR
  965.       ELSE _                                                         ' DD061303/COLR
  966.          ZFG5$ = ZEscape$ + "[1;34;40m" : _     'Brt Blue          ' DD061303/COLR
  967.          ZFG6$ = ZEscape$ + "[1;35;40m" : _     'Brt Magenta       ' DD061303/COLR
  968.          ZFG7$ = ZEscape$ + "[1;33;44m" : _     'Yellow/Blue       ' DD061303/COLR
  969.          ZFG8$ = ZEscape$ + "[1;33;42m" : _     'Yellow/Green      ' DD061303/COLR
  970.          ZFG9$ = ZEscape$ + "[1;33;41m" : _     'Yellow/Red        ' DD061303/COLR
  971.          ZFGA$ = ZEscape$ + "[1;33;45m" : _     'Yellow/Magenta    ' DD061303/COLR
  972.          ZFGB$ = ZEscape$ + "[1;37;44m" : _     'White/Blue        ' DD061303/COLR
  973.          ZFGC$ = ZEscape$ + "[1;37;42m" : _     'White/Green       ' DD061303/COLR
  974.          ZFGD$ = ZEscape$ + "[1;37;41m" : _     'White/Red         ' DD061303/COLR
  975.          ZFGE$ = ZEscape$ + "[1;37;45m" : _     'White/Magenta     ' DD061303/COLR
  976.          ZFGF$ = ZEscape$ + "[1;36;44m"         'Brt Cyan/Blue     ' DD061303/COLR
  977. * REPLACING old line(s) by new
  978. 59970 CALL QuickTPut (ZEmphasizeOff$,0)
  979.       ZOutTxt$ = "Make text R)ed,G)reen,Y)ellow,B)lue,P)urple,C)yan,W)hite" + ZPressEnterExpert$
  980.       GOSUB 59973
  981.       IF ZWasQ = 0 THEN _
  982.          ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + _
  983.              ";40;" + MID$(STR$(ZUserTextColor),2) + "m" : _
  984.          EXIT SUB
  985.       CALL AllCaps (ZUserIn$)
  986.       WasX = INSTR("RGYBPCW",ZUserIn$)
  987.       IF WasX = 0 THEN _
  988.          GOTO 59970
  989.       ZUserTextColor = 30 + WasX
  990. * ------[ first line different ]------
  991.       ZOutTxt$ = "Make text Bright (Y,[N])"
  992.       GOSUB 59973
  993.       ZBoldText$ = CHR$(48 - ZYes)
  994.       ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m"
  995.       GOTO 59970
  996. * REPLACING old line(s) by new
  997. * ------[ first line different ]------
  998. 59973 ZSubParm = 1
  999.       ZTurboKey = -ZTurboKeyUser
  1000.       CALL TGet
  1001.       IF ZSubParm = -1 THEN _
  1002.          EXIT SUB
  1003.       RETURN
  1004.       END SUB
  1005. * REPLACING old line(s) by new
  1006. 59980 ' $SUBTITLE: 'SetGraphic - Sets user graphic preference'
  1007. ' $PAGE
  1008. '
  1009. '  NAME    --  SetGraphic
  1010. '
  1011. '  INPUTS  --  PARAMETER                   MEANING
  1012. '              GraphicsNumber        0=None, 1=Ascii, 2=color
  1013. '
  1014. '  OUTPUTS --  ZWasGR                Shared var - set to
  1015. '                                    graphics.number
  1016. '              ZUserGraphicDefault$ What add to file name to
  1017. '                                    see if got graphics file ver
  1018. '
  1019. '  PURPOSE --  Sets file graphics preference
  1020. '
  1021.       SUB SetGraphic (GraphicsNumber) STATIC
  1022.       ZWasGR = GraphicsNumber
  1023.       IF ZWasGR = 2 THEN _
  1024.          ZDR1$ = ZFG1Def$ : _
  1025.          ZDR2$ = ZFG2Def$ : _
  1026.          ZDR3$ = ZFG3Def$ : _
  1027. * ------[ first line different ]------
  1028.          ZDR4$ = ZFG4Def$ : _                                        ' DD061303/COLR
  1029.          ZDR5$ = ZFG5$ : _                                           ' DD061303/COLR
  1030.          ZDR6$ = ZFG6$ : _                                           ' DD061303/COLR
  1031.          ZDR7$ = ZFG7$ : _                                           ' DD061303/COLR
  1032.          ZDR8$ = ZFG8$ : _                                           ' DD061303/COLR
  1033.          ZDR9$ = ZFG9$ : _                                           ' DD061303/COLR
  1034.          ZDRA$ = ZFGA$ : _                                           ' DD061303/COLR
  1035.          ZDRB$ = ZFGB$ : _                                           ' DD061303/COLR
  1036.          ZDRC$ = ZFGC$ : _                                           ' DD061303/COLR
  1037.          ZDRD$ = ZFGD$ : _                                           ' DD061303/COLR
  1038.          ZDRE$ = ZFGE$ : _                                           ' DD061303/COLR
  1039.          ZDRF$ = ZFGF$ _                                             ' DD061303/COLR
  1040.       ELSE ZDR1$ = "" : _
  1041.            ZDR2$ = "" : _
  1042.            ZDR3$ = "" : _
  1043.            ZDR4$ = "" : _                                            ' DD061303/COLR
  1044.            ZDR5$ = "" : _                                            ' DD061303/COLR
  1045.            ZDR6$ = "" : _                                            ' DD061303/COLR
  1046.            ZDR7$ = "" : _                                            ' DD061303/COLR
  1047.            ZDR8$ = "" : _                                            ' DD061303/COLR
  1048.            ZDR9$ = "" : _                                            ' DD061303/COLR
  1049.            ZDRA$ = "" : _                                            ' DD061303/COLR
  1050.            ZDRB$ = "" : _                                            ' DD061303/COLR
  1051.            ZDRC$ = "" : _                                            ' DD061303/COLR
  1052.            ZDRD$ = "" : _                                            ' DD061303/COLR
  1053.            ZDRE$ = "" : _                                            ' DD061303/COLR
  1054.            ZDRF$ = ""                                                ' DD061303/COLR
  1055.       ZUserGraphicDefault$ = MID$(" GC",ZWasGR+1, - (ZWasGR > 0))
  1056.       END SUB
  1057. * REPLACING old line(s) by new
  1058. 60130 ' $SUBTITLE: 'MetaGSR -- Meta Global search and replace'
  1059. ' $PAGE
  1060. '
  1061. '  NAME    --  MetaGSR
  1062. '
  1063. '  INPUTS  --  PARAMETER               MEANING
  1064. '              Strng$              String to edit
  1065. '
  1066. '  OUTPUTS --  Strng$              Edited string
  1067. '
  1068. '  PURPOSE --  Global search and replace for meta variables
  1069. '
  1070. * ------[ first line different ]------
  1071. ' DSZ port [PORT#] speed [BAUD] estimate 0 [CBAUD] ha on sz -r [FILE]
  1072. '
  1073. ' RBBS will substitute the variable [CBAUD] with the actual modem speed.
  1074. '
  1075.       SUB MetaGSR (Strng$,OverStrike) STATIC
  1076.       WasY = 1
  1077. * REPLACING old line(s) by new
  1078. 60135 MetaVal$ = MID$(Strng$,WasX+1,WasY-WasX-1)
  1079. * ------[ first line different ]------
  1080.       WasI = INSTR("      BAUD  CBAUD PORT  PORT# PARITYPROTO NODE  FILE  ",MetaVal$) ' KG122301
  1081.       IF WasI = 0 OR LEN(MetaVal$) < 4 THEN _
  1082.          WasY = WasX + 1 : _
  1083.          GOTO 60131
  1084.       WasJ = (WasI-1)\6 + 1
  1085.       WasK = (WasI+4)\6 + 1
  1086.       IF WasK > WasJ THEN _
  1087.          EXIT SUB
  1088.       ON WasJ GOTO 60155, _
  1089.                 60137, _
  1090.                 60138, _
  1091.                 60139, _
  1092.                 60141, _
  1093.                 60143, _
  1094.                 60145, _
  1095.                 60147, _
  1096.                 60149, _
  1097.                 60151
  1098. * REPLACING old line(s) by new
  1099. * ------[ first line different ]------
  1100. 60149 IF ZWasBatchTransfer THEN _              'Pe BatchUp Mod
  1101.  CALL BreakFileName (ZFileName$,Drive$,Prefix$,Ext$,ZFalse) : _
  1102.        WorkHold$ = Drive$ _
  1103.      ELSE _
  1104.        IF ZBatchTransfer THEN _ 
  1105.          WorkHold$ = "@" + ZNodeWorkFile$ _
  1106.       ELSE WorkHold$ = ZFileName$
  1107.       GOTO 60151
  1108. * REPLACING old line(s) by new
  1109. 60180 ' $SUBTITLE: 'TimeLock - Test TIME LOCK for premium features'
  1110. ' $PAGE
  1111. '
  1112. '  NAME    --  TimeLock  (written by Doug Azzarito)
  1113. '
  1114. '  INPUTS  --  PARAMETER                   MEANING
  1115. '              ZTimeLockSet               SECONDS/SESSION TO LOCK
  1116. '
  1117. '  OUTPUTS --  ZSubParm     -1 if feature is LOCKED
  1118. '
  1119. '  PURPOSE -- Check elapsed time for lock duration
  1120. '
  1121.       SUB TimeLock STATIC
  1122.       CALL TimeRemain(MinsRemaining)
  1123.       IF ZSecsUsedSession! >= ZTimeLockSet THEN _
  1124.          ZOK = ZTrue : _
  1125.          EXIT SUB
  1126.       ZOutTxt$ = ZFirstName$
  1127.       CALL NameCaps(ZOutTxt$)
  1128.       CALL QuickTPut1 ("Sorry, " + ZOutTxt$ + ", function locked" + _
  1129. * ------[ first line different ]------
  1130.                    STR$(INT((ZTimeLockSet-ZSecsUsedSession!)/60)) + _
  1131.                    " more minutes" + _
  1132.                    STR$(INT(ZTimeLockSet-ZSecsUsedSession!) MOD 60) + " seconds")
  1133.       CALL BufFile(ZHelpPath$+"TIMELOCK"+ZHelpExtension$,WasX)
  1134.       ZOK = ZFalse
  1135.       ZLastIndex = 0
  1136.       END SUB
  1137. * REPLACING old line(s) by new
  1138. 60300 ' $SUBTITLE: 'AutoPage - NOTIFIES ZSysop WHEN SPECIFIC USER CALLS'
  1139. ' $PAGE
  1140. '
  1141. '  NAME    --  AutoPage   'Contributed  by Gregg and Bob Snyder
  1142. '                        'and RoseMarie Siddiqui
  1143. '
  1144. '  INPUTS  --  ZAutoPageDef$  List of conditions that trigger
  1145. '                                       notification and how
  1146. '
  1147. '  OUTPUTS -- NONE
  1148. '
  1149. '  PURPOSE -- Search ZAutoPageDef$ for match on whether
  1150. '             on name, security level, whether new user.
  1151. '             Also controls whether caller notified and
  1152. '             number of times sysop has bell rung.
  1153. '             And what tune to play (if any).
  1154. '
  1155.       SUB AutoPage STATIC
  1156.       CALL FindIt (ZAutoPageDef$)
  1157.       IF NOT ZOK THEN _
  1158.          EXIT SUB
  1159.       ZErrCode = 0
  1160.       ZOK = ZFalse
  1161.       WHILE NOT EOF(2) AND ZOK = ZFalse AND ZErrCode = 0
  1162.          CALL ReadParms (ZWorkAra$(),4,1)
  1163.          IF ZErrCode = 0 THEN _
  1164.             ZOK = (ZWorkAra$(1) = ZActiveUserName$) : _
  1165.             IF NOT ZOK THEN _
  1166.                IF ZNewUser AND ZWorkAra$(1) = "NEWUSER" THEN _
  1167.                   ZOK = ZTrue _
  1168.                ELSE IF LEFT$(ZWorkAra$(1),1) = "/" AND LEN(ZWorkAra$(1)) > 2 THEN _
  1169.                        ZWasB = INSTR (2,ZWorkAra$(1),"/") : _
  1170.                        IF ZWasB > 0 AND LEN(ZWorkAra$(1)) > ZWasB THEN _
  1171.                           IF ZUserSecLevel <= VAL(MID$(ZWorkAra$(1),ZWasB+1)) AND _
  1172.                              ZUserSecLevel >= VAL(MID$(ZWorkAra$(1),2)) THEN _
  1173.                                 ZOK = ZTrue
  1174.       WEND
  1175.       CLOSE 2
  1176.       IF ZErrCode > 0 OR NOT ZOK THEN _
  1177.          ZErrCode = 0 : _
  1178.          EXIT SUB
  1179.       ZPageStatus$ = "AP!"
  1180.       IF LEFT$(ZWorkAra$(2),1) = "N" THEN _
  1181.          ZOutTxt$ = "Telling sysop you're on..." : _
  1182.          CALL RingCaller
  1183.       ZWasB = (ZWorkAra$(4) = "")
  1184.       ZWorkAra$(5) = ""
  1185.      TempSnoop = ZSnoop
  1186.      ZSnoop = ZTrue
  1187.      CALL Line25
  1188.       FOR WasI = 1 TO VAL(ZWorkAra$(3))
  1189.          IF ZWasB THEN _
  1190.             CALL LPrnt (ZBellRinger$,0) : _
  1191.          ELSE ZWorkAra$(5) = ZWorkAra$(5) + "O4 X" + VARPTR$(ZWorkAra$(4))
  1192.       NEXT
  1193. * ------[ first line different ]------
  1194.       ZSnoop = TempSnoop
  1195.       END SUB
  1196. * REPLACING old line(s) by new
  1197. 62540 ' $SUBTITLE: 'RptTime -- Reports time on system'
  1198. ' $PAGE
  1199. '
  1200. '  NAME    --  RptTime
  1201. '
  1202. '  INPUTS  --  PARAMETER                   MEANING
  1203. '
  1204. '  OUTPUTS --
  1205. '
  1206. '  PURPOSE --  Tells user time used on system
  1207. '
  1208.       SUB RptTime STATIC
  1209.       CALL SkipLine (1)
  1210.       CALL GetTime
  1211.       CALL AMorPM
  1212.       Mins = (ZSessionHour * 60) + ZSessionMin
  1213.       CALL Carrier
  1214.       IF ZSubParm = -1 THEN _
  1215.          EXIT SUB
  1216.       CALL QuickTPut1 ("Now: " + DATE$ + " at " + TIME$)
  1217.       CALL QuickTPut1 ("On for" + STR$(Mins) + " mins," + _
  1218.                         STR$(ZSessionSec) + " secs")
  1219. * ------[ first line different ]------
  1220. '      CALL Talk (7,ZOutTxt$)
  1221.       END SUB
  1222. * REPLACING old line(s) by new
  1223. 62620 ' $SUBTITLE: 'Transfer - Subroutine for external protocols'
  1224. ' $PAGE
  1225. '
  1226. '  NAME    -- Transfer
  1227. '
  1228. '  INPUTS  --     PARAMETER                    MEANING
  1229. '              ZTransferFunction         = 1 DOWNLOAD FILE TO USER
  1230. '                                        = 2 UPLOAD FILE TO RBBS-PC
  1231. '              ZFileName$                NAME OF FILE FOR Transfer
  1232. '              ZComPort$                 NAME OF COMMUNICATIONS PORT
  1233. '                                        TO BE USED BY KERMIT (COM1
  1234. '                                        OR COM2)
  1235. '              ZBPS                      = -1 FOR   300 BAUD
  1236. '                                        = -2 FOR   450 BAUD
  1237. '                                        = -3 FOR  1200 BAUD
  1238. '                                        = -4 FOR  2400 BAUD
  1239. '                                        = -5 FOR  4800 BAUD
  1240. '                                        = -6 FOR  9600 BAUD
  1241. * ------[ first line different ]------
  1242. '                                        = -7 FOR 14400 BAUD
  1243. '                                        = -8 FOR 19200 BAUD
  1244. '
  1245. '  OUTPUTS  -- NONE
  1246. '
  1247. '  PURPOSE -- To transfer files using external protocols
  1248. '
  1249.       SUB Transfer STATIC
  1250. IF ZUpBatchTransfer Then _
  1251.    Exit Sub
  1252.       IF ZPrivateDoor THEN _
  1253.          CALL PrivDoorRtn : _
  1254.          EXIT SUB
  1255.       IF ZTransferFunction = 1 THEN _
  1256.          ZUserIn$ = ZDownTemplate$ : _
  1257.          ZWasZ$ = "send " _
  1258.       ELSE IF ZTransferFunction = 2 THEN _
  1259.               ZUserIn$ = ZUpTemplate$ : _
  1260.               ZWasZ$ = "receive "
  1261.       CALL MetaGSR (ZUserIn$,ZFalse)
  1262.       CALL QuickTPut1 ("Protocol     : "+ZProtoPrompt$)
  1263.       CALL QuickTPut ("Ready to " + ZWasZ$ + " ",0)
  1264. '
  1265.       IF ZBatchTransfer or ZWasBatchTransfer THEN _        'Pe BatchUp mod
  1266.          CALL QuickTPut1 ("(BATCH)")  _
  1267.       ELSE CALL QuickTPut1 (ZFileNameHold$)
  1268. '
  1269.    IF ZWasBatchTransfer THEN _                             'Pe BatchUp mod
  1270.         Temp$ = ZBatchWorkFile$ _
  1271.           ELSE IF ZBatchTransfer Then _
  1272.         Temp$ = ZNodeWorkFile$  
  1273.    IF ZBatchTransfer or ZWasBatchTransfer THEN _        'Pe BatchUp mod
  1274.        CALL OpenWork (2,Temp$) : _
  1275.           WHILE NOT EOF(2) : _
  1276.             CALL ReadAny : _
  1277.            CALL BreakFileName (ZOutTxt$,ZWasZ$,ZWasY$,WasX$,ZTrue) : _
  1278.          CALL QuickTPut1 ("   "+ZWasY$+WasX$) : _
  1279.      WEND
  1280. '
  1281.       IF ZAutoEnd = 1 THEN _                  'Pe 03/30/92
  1282.          CALL QuickTPut1 ("Automatic logoff, if transfer OK")   'Pe 08/17/91
  1283.       CALL PrivDoorRtn
  1284.       END SUB
  1285. * REPLACING old line(s) by new
  1286. 62629 GOSUB 62633
  1287. * ------[ first line different ]------
  1288.       'CLS
  1289.       CALL LPrnt (ZOutTxt$,1)
  1290.       CALL ShellExit (ZUserIn$)
  1291. * REPLACING old line(s) by new
  1292. * ------[ first line different ]------
  1293. 62633 IF ZTransferFunction = 1 THEN _                 'Pe 06/19/92
  1294.       ZOutTxt$ = STR$(ZUserSecLevel) + _
  1295.          " " + _
  1296.          ZActiveUserName$ + _
  1297.          " " +  _ 
  1298.                  ZWasCI$ + ZCrlF$ : _
  1299.       ZOutTxt$ = ZOutTxt$ +  "Downloading " +STR$(ZBytesInFile#) + _     'Pe 10/11/91
  1300.        " bytes" + _                                'Pe 10/11/91
  1301.       " At "+  STR$(ZBaudTest!) + " Baud" + _
  1302.        " Time:" + _
  1303.      STR$(INT(ZBlocksInFile# / 60)) + _
  1304.      " min," + _
  1305.      STR$(INT(ZBlocksInFile# - (INT(ZBlocksInFile# / 60) * 60))) + _
  1306.      " sec (approx)"_                              'Pe 10/11/91
  1307.      Else ZOutTxt$ = "Uploading file"+ _               'Pe 06/19/92
  1308.           " At "+  STR$(ZBaudTest!) + " Baud"          'Pe 06/19/92
  1309.          RETURN
  1310.       END SUB
  1311. * REPLACING old line(s) by new
  1312. 62670 ZOutTxt$ = Prompt$
  1313. * ------[ first line different ]------
  1314.       ZHidden = ZTrue
  1315.       CALL PopCmdStack
  1316.       ZHidden = ZFalse
  1317.       IF ZSubParm < 0 OR ZWasQ = 0 THEN _
  1318.          EXIT SUB
  1319.       IF LEN(ZUserIn$) > 15 THEN _
  1320.          CALL QuickTPut1 ("15 chars max") : _
  1321.          GOTO 62670
  1322.       IF INSTR(ZUserIn$,";") > 0 THEN _
  1323.          CALL QuickTPut1 ("Cannot use ';'") : _
  1324.          GOTO 62670
  1325.    IF NOT ZSYSOP Then                                     ' Pe 04/16/92
  1326.       IF INSTR(ZUserIn$," ") > 0 THEN _                'lk 022792
  1327.          CALL QuickTPut1 ("Cannot use Spaces ' '") : _ 'lk 022792
  1328.          GOTO 62670                                    'lk 022792
  1329.     End If                                                 'Pe 04/16/92
  1330.       IF DisallowSpaces THEN _
  1331.          IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  1332.             CALL QuickTPut1 ("Not all blanks") : _
  1333.             GOTO 62670
  1334.       CALL AllCaps (ZUserIn$)
  1335.       ZWasZ$ = ZUserIn$
  1336.       END SUB
  1337. * REPLACING old line(s) by new
  1338. 64510 ZChatAvail = (INSTR("MUF",ZActiveMenu$) > 0)
  1339.       ZOK = ZTrue
  1340.       ZLastIndex = 0
  1341.       END SUB
  1342. * ------[ first line different ]------
  1343. ' ViewArc Subroutine.... deleted
  1344. * DELETING old line(s)
  1345. 64600
  1346. 64605
  1347. 64610
  1348. 64620
  1349. 64630
  1350. * REPLACING old line(s) by new
  1351. 64636 IF ZAnsIndex < ZLastIndex THEN _
  1352.          GOTO 64638
  1353. * ------[ first line different ]------
  1354.     ZOutTxt$ = "A)nsi Editor  B)ullet  C)ase     F)ile   H)ilite"  'Pe 09/02/91
  1355.     CALL TopPrompt
  1356.     ZOutTxt$ = "L)ine feeds   N)ulls   T)urboKey X)pert  !)bell"
  1357.     CALL ColorPrompt (ZOutTxt$)
  1358.